Modem sensing systems typically include a sensor, a microprocessor, and an A/D converter coupled there between. Sensors typically provide a low-level signal which needs to be amplified before being of use. Major error sources in such a system include offset error and gain error.
Offset error calibration of the sensor can be done by applying a zero input to the sensor and reading the resulting value output from an A/D converter. If the offset error is small, the processor may simply add or subtract that value from the signal to arrive at a compensated value. Doing this with a large offset error, however, can result in the loss of almost half of the A/D converter's resolution. Thus it is desired to output a signal from the processor, pass it through a D/A converter and counter-act the offset error within the signal conditioning circuit. This allows the full resolution of the A/D converter to be used for signal values. This also compensates for any offset errors occurring in the signal conditioning circuit itself, another point of concern.
To get best resolution, a full scale input into the sensor should result in a full scale output reading from the A/D converter. Since the sensor's full scale output can vary from unit to unit, some means for adjusting the circuit's gain is needed.
Gain calibration can be done by applying a full scale input to the sensor after offset calibration is complete. The gain of the circuit is adjusted until the out put of the A/D converterjust reaches a full scale reading. At this point the whole signal path is calibrated for gain and offset.
The offset null and gain control signals can compensate for errors occurring anywhere in the entire signal path from the sensor to the output of the A/D converter. Once the system is calibrated, the values of the necessary adjustments are stored in the microprocessor's non-volatile memory for recall after every power-up sequence. If the system is such that the output of the sensor is known to be zero immediately after power up, offset calibration may be performed automatically at every power up time and the offset null adjustment value would not need to be stored in non-volatile memory.